package org.smart4j.framework.util;

/**
 * 类型转换工具类
 * @author TW
 *
 */
public final class CastUtil {

	/**
	 * 转换为String类型
	 * @param obj
	 * @return
	 */
	public static String castString(Object obj){
		return castString(obj,"");
	}

	/**
	 * 转换为String类型（提供默认值）
	 * @param obj
	 * @param defaultValue
	 * @return
	 */
	public static String castString(Object obj,String defaultValue){
		
		return obj !=null ?String.valueOf(obj) : defaultValue;
	}
	
	
	/**
	 * 转换为Double类型
	 * @param obj
	 * @return
	 */
	public static double castDouble(Object obj){
		return castDouble(obj, 0);
	}

	/**
	 * 转换为Double类型(提供默认值)
	 * @param obj
	 * @param defaultValue
	 * @return
	 */
	public static double castDouble(Object obj,double defaultValue){
		
		double doubleValue = defaultValue;
		if (obj != null){
			String strValue = castString(obj);
			if (StringUtil.isNotEmpty(strValue)){
				try {
					doubleValue = Double.parseDouble(strValue);
				} catch (NumberFormatException e) {
					doubleValue=defaultValue;
				}
			}
		}
		
		return doubleValue;
	}
	
	
	/**
	 * 转换为long类型
	 * @param obj
	 * @return
	 */
	public static long castLong(Object obj){
		return castLong(obj, 0);
	}

	/**
	 * 转换为long类型(提供默认值)
	 * @param obj
	 * @param defaultValue
	 * @return
	 */
	public static long castLong(Object obj,long defaultValue){
		
		long longValue = defaultValue;
		if (obj != null){
			String strValue = castString(obj);
			if(StringUtil.isNotEmpty(strValue)){
				try {
					longValue = Long.parseLong(strValue);
				} catch (NumberFormatException e) {
					longValue = defaultValue;
				}
			}
		}
		return longValue;
	}
	
	
	
	/**
	 * 转换为int类型
	 * @param obj
	 * @return
	 */
	public static int castInt(Object obj){
		return castInt(obj, 0);
	}

	/**
	 * 转换为int类型(提供默认值)
	 * @param obj
	 * @param defaultValue
	 * @return
	 */
	public static int castInt(Object obj,int defaultValue){
		
		int intValue = defaultValue;
		if (obj != null){
			String strValue = castString(obj);
			if(StringUtil.isNotEmpty(strValue)){
				try {
					intValue =Integer.parseInt(strValue);
				} catch (NumberFormatException e) {
					intValue = defaultValue;
				}
			}
		}
		return intValue;
	}
	
	
	/**
	 * 转换为int类型
	 * @param obj
	 * @return
	 */
	public static boolean castBoolean(Object obj){
		return castBoolean(obj, false);
	}

	/**
	 * 转换为int类型(提供默认值)
	 * @param obj
	 * @param defaultValue
	 * @return
	 */
	public static boolean castBoolean(Object obj,boolean defaultValue){
		
		boolean booleanValue = defaultValue;
		if(obj != null){
			booleanValue = Boolean.parseBoolean(castString(obj));
		}
		return booleanValue;
	}
	
	
}
